home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume10 / mp23 / part02 < prev    next >
Encoding:
Text File  |  1990-01-19  |  15.3 KB  |  593 lines

  1. Newsgroups: comp.sources.misc
  2. subject: v10i014: mp V2.3 - a PostScript pretty printer for mail etc.. (Part 2 of 2).
  3. from: richb@Aus.Sun.COM (Rich Burridge)
  4. Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
  5.  
  6. Posting-number: Volume 10, Issue 14
  7. Submitted-by: richb@Aus.Sun.COM (Rich Burridge)
  8. Archive-name: mp23/part02
  9.  
  10. ---- Cut Here and unpack ----
  11. #!/bin/sh
  12. # this is part 2 of a multipart archive
  13. # do not concatenate these parts, unpack them in order with /bin/sh
  14. # file mp.1 continued
  15. #
  16. CurArch=2
  17. if test ! -r s2_seq_.tmp
  18. then echo "Please unpack part 1 first!"
  19.      exit 1; fi
  20. ( read Scheck
  21.   if test "$Scheck" != $CurArch
  22.   then echo "Please unpack part $Scheck next!"
  23.        exit 1;
  24.   else exit 0; fi
  25. ) < s2_seq_.tmp || exit 1
  26. echo "x - Continuing file mp.1"
  27. sed 's/^X//' << 'SHAR_EOF' >> mp.1
  28. XEditing this file will allow you to introduce some stylistic variation
  29. Xin the printing of mail.
  30. X.TP
  31. X.B /usr/local/lib/mp.pro.filofax.ps
  32. XPostscript prologue used to print out files in Filofax format.
  33. X.TP
  34. X.B /usr/local/lib/mp.pro.timeman.ps
  35. XPostScript prologue used to print out files in Time Manager format.
  36. X.SH "SEE ALSO"
  37. Xmail(1)
  38. X.SH AUTHORS
  39. XOriginal version by Steve Holden.
  40. X.br
  41. XConverted to C, modified and maintained by Rich Burridge, Sun Microsystems Australia,
  42. X.br
  43. XOriginal modified to handle net news articles and MH mail by Bruno Pillard, Chorus Systemes, France,
  44. X.br
  45. XHandling of mail digests added by Dave Glowacki of Public Works Computer Services, St Paul, MN.
  46. X.br
  47. XManual page for the initial version revised by Rick Rodgers, UCSF School of Pharmacy, San Francicso.
  48. X.br
  49. XSupport for Personal Organiser printing style added by Douglas Buchanan,
  50. XSun Microsystems Europe.
  51. X.br
  52. XSubstantial modifications to header parsing by Jeremy Webber,
  53. XComputer Science Department, University of Adelaide, Australia.
  54. X.br
  55. XSupport for printing multiple files and subject line filename print for
  56. Xordinary files added by Sam Manoharan, Edinburgh University.
  57. SHAR_EOF
  58. echo "File mp.1 is complete"
  59. chmod 0444 mp.1 || echo "restore of mp.1 fails"
  60. set `wc -c mp.1`;Sum=$1
  61. if test "$Sum" != "4500"
  62. then echo original size 4500, current size $Sum;fi
  63. echo "x - extracting mp.pro.ps (Text)"
  64. sed 's/^X//' << 'SHAR_EOF' > mp.pro.ps &&
  65. X%!PS-Adobe-1.0
  66. X%%Creator: Steve Holden
  67. X%%Modifed: Rich Burridge
  68. X%%Title: @(#)mp.pro.ps 1.4 89/05/09
  69. X%%CreationDate: see above
  70. X%%DocumentFonts: Times-Bold Times-Roman Courier
  71. X%%Pages: (atend)
  72. X%%PageLength 60
  73. X%%LineLength 80
  74. X%%EndComments
  75. X
  76. X%Title: backspacefont.ps suggested by Glenn Reid (Adobe Systems).
  77. X
  78. X/backspacefont {
  79. X    /Courier findfont dup length dict begin
  80. X        { %forall
  81. X            1 index /FID eq { pop pop } { def } ifelse
  82. X        } forall
  83. X        currentdict /UniqueID known { %if
  84. X              /UniqueID UniqueID 16#800000 xor def
  85. X        } if
  86. X        CharStrings length 1 add dict begin
  87. X            CharStrings { def } forall
  88. X          /backspace { -600 0 setcharwidth } bind def
  89. X            currentdict
  90. X      end
  91. X        /CharStrings exch def
  92. X        /Encoding Encoding 256 array copy def
  93. X        Encoding 8 /backspace put
  94. X        currentdict
  95. X    end
  96. X    definefont
  97. X} bind def
  98. X
  99. X/CourierBack backspacefont
  100. X
  101. X/font1d /Times-Bold findfont 10 scalefont def
  102. X/font2d /Times-Roman findfont 10 scalefont def
  103. X/font3d /CourierBack findfont 9 scalefont def
  104. X/fontHd /Helvetica-BoldOblique findfont 14 scalefont def
  105. X/fontH2 /Helvetica-BoldOblique findfont 10 scalefont def
  106. X/fontNd /Times-Bold findfont 12 scalefont def
  107. X
  108. X/BoldFont { font1d setfont } def
  109. X/PrimaryFont { font2d setfont } def
  110. X/SecondaryFont { font3d setfont } def
  111. X/fontH { fontHd setfont } def
  112. X/fontD { fontH2 setfont } def
  113. X/fontN { fontNd setfont } def
  114. X
  115. XSecondaryFont
  116. X
  117. X/endpage
  118. X{
  119. X  gsave
  120. X    fontH
  121. X    newpath
  122. X      90 756 moveto
  123. X      100 736 10 180 270 arc
  124. X      536 736 10 270 0 arc
  125. X      536 756 10 0 90 arc
  126. X      100 756 10 90 180 arc
  127. X    closepath
  128. X    0.75 setgray fill
  129. X    newpath
  130. X      318 746 15 0 360 arc
  131. X      gsave
  132. X        1 setgray fill
  133. X      grestore
  134. X    closepath
  135. X    0 setgray stroke
  136. X    100 740 moveto
  137. X    MailFor show
  138. X    User show
  139. X    fontD
  140. X    TimeNow stringwidth pop neg 536 add 740 moveto TimeNow show
  141. X    fontN
  142. X    dup stringwidth pop 2 div neg 318 add 740 moveto show
  143. X    fontH
  144. X    newpath
  145. X      90 60 moveto
  146. X      100 40 10 180 270 arc
  147. X      536 40 10 270 0 arc
  148. X      536 60 10 0 90 arc
  149. X      100 60 10 90 180 arc
  150. X    closepath
  151. X    0.75 setgray fill
  152. X    0 setgray
  153. X    100 44 moveto Subject show
  154. X  grestore
  155. X  showpage              % display it
  156. X  newpage               % reset parameters for next
  157. X} def
  158. X
  159. X/newpage
  160. X{
  161. X  /lct 0 def
  162. X  /ypos 700 def
  163. X  100 ypos moveto
  164. X} def
  165. X
  166. X/showline
  167. X{
  168. X  show
  169. X  /ypos ypos 10 sub def
  170. X  100 ypos moveto
  171. X} def
  172. X
  173. Xnewpage                    % establish first page parameters
  174. SHAR_EOF
  175. chmod 0444 mp.pro.ps || echo "restore of mp.pro.ps fails"
  176. set `wc -c mp.pro.ps`;Sum=$1
  177. if test "$Sum" != "2488"
  178. then echo original size 2488, current size $Sum;fi
  179. echo "x - extracting mp.pro.filofax.ps (Text)"
  180. sed 's/^X//' << 'SHAR_EOF' > mp.pro.filofax.ps &&
  181. X%!PS-Adobe-1.0
  182. X%%Creator: Steve Holden
  183. X%%Modifed: Rich Burridge
  184. X%%Title: @(#)mp.pro.filofax.ps 1.3 89/05/09
  185. X%%CreationDate: see above
  186. X%%PageLength 60
  187. X%%LineLength 80
  188. X%%DocumentFonts: Times-Bold Times-Roman Courier
  189. X%%Pages: (atend)
  190. X%%EndComments
  191. X
  192. X%Title: backspacefont.ps suggested by Glenn Reid (Adobe Systems).
  193. X
  194. X/backspacefont {
  195. X    /Courier findfont dup length dict begin
  196. X        { %forall
  197. X            1 index /FID eq { pop pop } { def } ifelse
  198. X        } forall
  199. X        currentdict /UniqueID known { %if
  200. X              /UniqueID UniqueID 16#800000 xor def
  201. X        } if
  202. X        CharStrings length 1 add dict begin
  203. X            CharStrings { def } forall
  204. X          /backspace { -600 0 setcharwidth } bind def
  205. X            currentdict
  206. X      end
  207. X        /CharStrings exch def
  208. X        /Encoding Encoding 256 array copy def
  209. X        Encoding 8 /backspace put
  210. X        currentdict
  211. X    end
  212. X    definefont
  213. X} bind def
  214. X/CourierBack backspacefont
  215. X/font1d /Times-Bold findfont 11 scalefont def
  216. X/font2d /Times-Roman findfont 11 scalefont def
  217. X/font3d /CourierBack findfont 10 scalefont def
  218. X/fontHd /Helvetica-BoldOblique findfont 15 scalefont def
  219. X/fontH2 /Helvetica-BoldOblique findfont 10 scalefont def
  220. X/fontNd /Times-Bold findfont 12 scalefont def
  221. X
  222. X/BoldFont { font1d setfont } def
  223. X/PrimaryFont { font2d setfont } def
  224. X/SecondaryFont { font3d setfont } def
  225. X/fontH { fontHd setfont } def
  226. X/fontD { fontH2 setfont } def
  227. X/fontN { fontNd setfont } def
  228. X
  229. XSecondaryFont
  230. X%% stick in all the fudge factors here. May need changing for page sizes,
  231. X%% laserwriter setups etc?
  232. X%%
  233. X/binderspace 100 def
  234. X/filowidth 484 def
  235. X/filoheight 972 def
  236. X/margin 12 def
  237. X/xleft binderspace 6 add def
  238. X/yco filoheight 50 sub def            % space at the top
  239. X/xright filowidth binderspace add 30 sub def    % space at right
  240. X
  241. X/endpage
  242. X{
  243. X  gsave
  244. X    fontH
  245. X    % draw the top for owner
  246. X    newpath
  247. X      xleft 10 sub yco moveto
  248. X      xleft yco 20 sub 10 180 270 arc
  249. X      xright yco 20 sub 10 270 0 arc
  250. X      xright yco 10 0 90 arc
  251. X      xleft yco 10 90 180 arc
  252. X    closepath
  253. X    0.90 setgray fill
  254. X%    newpath
  255. X%      318 864 15 0 360 arc
  256. X%      gsave
  257. X%        1 setgray fill
  258. X%      grestore
  259. X%    closepath
  260. X    0 setgray stroke
  261. X    xleft yco 16 sub moveto
  262. X    MailFor show
  263. X    User show
  264. X    fontD
  265. X    TimeNow stringwidth pop neg xright add yco 16 sub moveto TimeNow show
  266. X    fontN
  267. X    % dup stringwidth pop 2 div neg 318 add 858 moveto show
  268. X    fontH
  269. X    % lower box for subject etc
  270. X    newpath
  271. X      xleft 10 sub 60 moveto
  272. X      xleft 40 10 180 270 arc
  273. X      xright 40 10 270 0 arc
  274. X      xright 60 10 0 90 arc
  275. X      xleft 60 10 90 180 arc
  276. X    closepath
  277. X    0.90 setgray fill
  278. X    % stick the page number just a few points in from the right hand edge
  279. X    newpath
  280. X      xright 10 sub 50 15 0 360 arc
  281. X      gsave
  282. X        1 setgray fill
  283. X      grestore
  284. X    closepath
  285. X    0 setgray stroke
  286. X    xleft 44 moveto Subject show
  287. X    fontN
  288. X    % position and print the page number
  289. X    dup stringwidth pop 2 div neg xright 10 sub add 46 moveto show
  290. X    fontH
  291. X  grestore
  292. X  modu 2 eq eof 0 ne or { showpage } if    % do a 'form feed'
  293. X                    % if ready for it
  294. X  eof 0 eq { newpage } if    % reset parameters for next if not end of file
  295. X} def
  296. X
  297. X/endfile
  298. X{
  299. X     /eof 1 def
  300. X     endpage
  301. X} def
  302. X
  303. X/xo 36 def
  304. X/yo 0 def
  305. X/pageno 0 def
  306. X/modu pageno 3 mod def    % get mod to work out page pos
  307. X/eof 0 def
  308. X
  309. X/weearc            % draws a little arc to show where the holes go
  310. X{ newpath
  311. X  xo yo 4 0 360 arc
  312. X  closepath
  313. X  fill
  314. X} def
  315. X
  316. X/filopage
  317. X{ gsave
  318. X%  24 -118 translate
  319. X  /xstart filowidth modu mul def
  320. X  /xstart xstart binderspace add def
  321. X  /xfin xstart filowidth add def
  322. X  modu 0 eq {        % first break
  323. X    /yo 130 def    % show where the holes should be punched
  324. X    weearc        % except that they will normally be off the edge of
  325. X    /yo 238 def    % the page
  326. X    weearc
  327. X    /yo 346 def
  328. X    weearc
  329. X    /yo 639 def
  330. X    weearc
  331. X    /yo 742 def
  332. X    weearc
  333. X    /yo 850 def
  334. X    weearc
  335. X  } if
  336. X  [1 4] 0 setdash    % use dashed lines for marker
  337. X  newpath
  338. X  xstart 0 moveto
  339. X  xfin 0 lineto
  340. X  xfin filoheight lineto
  341. X  stroke
  342. X  grestore
  343. X} def
  344. X
  345. X/newpage
  346. X{ 
  347. X  pageno 0 eq {            % set initial values for landscape drawing
  348. X        0.5 0.5 scale
  349. X        90 rotate
  350. X        -50 0 translate
  351. X        gsave            % save state for easy restore
  352. X    /eof 0 def
  353. X  } {
  354. X        grestore gsave        % return to preferred original state
  355. X  } ifelse            % initial setup
  356. X
  357. X  /modu pageno 3 mod def    % get mod to work out page pos
  358. X  0 0 filoheight sub translate    % initial position (-filoheight)
  359. X  filopage            % draw neccessary page breaks
  360. X  /times filowidth modu mul def % shift origin as far right as needed
  361. X  /times times margin add def    % move right by fudge factor 12
  362. X  times 0 translate
  363. X  /lct 0 def
  364. X  /ypos filoheight 110 sub def
  365. X  xleft ypos moveto
  366. X  /pageno pageno 1 add def    % add one for the next time
  367. X} def
  368. X
  369. X/showline
  370. X{
  371. X  show
  372. X  /ypos ypos 12 sub def
  373. X  xleft ypos moveto
  374. X} def
  375. X
  376. Xnewpage            % establish first page parameters
  377. SHAR_EOF
  378. chmod 0444 mp.pro.filofax.ps || echo "restore of mp.pro.filofax.ps fails"
  379. set `wc -c mp.pro.filofax.ps`;Sum=$1
  380. if test "$Sum" != "4819"
  381. then echo original size 4819, current size $Sum;fi
  382. echo "x - extracting mp.pro.timeman.ps (Text)"
  383. sed 's/^X//' << 'SHAR_EOF' > mp.pro.timeman.ps &&
  384. X%!PS-Adobe-1.0
  385. X%%Creator: Steve Holden
  386. X%%Modifed: Rich Burridge
  387. X%%Title: @(#)mp.pro.timeman.ps 1.3 89/05/09
  388. X%%CreationDate: see above
  389. X%%PageLength 60
  390. X%%LineLength 80
  391. X%%DocumentFonts: Times-Bold Times-Roman Courier
  392. X%%Pages: (atend)
  393. X%%EndComments
  394. X
  395. X%Title: backspacefont.ps suggested by Glenn Reid (Adobe Systems).
  396. X
  397. X/backspacefont {
  398. X    /Courier findfont dup length dict begin
  399. X        { %forall
  400. X            1 index /FID eq { pop pop } { def } ifelse
  401. X        } forall
  402. X        currentdict /UniqueID known { %if
  403. X              /UniqueID UniqueID 16#800000 xor def
  404. X        } if
  405. X        CharStrings length 1 add dict begin
  406. X            CharStrings { def } forall
  407. X          /backspace { -600 0 setcharwidth } bind def
  408. X            currentdict
  409. X      end
  410. X        /CharStrings exch def
  411. X        /Encoding Encoding 256 array copy def
  412. X        Encoding 8 /backspace put
  413. X        currentdict
  414. X    end
  415. X    definefont
  416. X} bind def
  417. X/CourierBack backspacefont
  418. X/font1d /Times-Bold findfont 12 scalefont def
  419. X/font2d /Times-Roman findfont 12 scalefont def
  420. X/font3d /CourierBack findfont 11 scalefont def
  421. X/fontHd /Helvetica-BoldOblique findfont 15 scalefont def
  422. X/fontH2 /Helvetica-BoldOblique findfont 10 scalefont def
  423. X/fontNd /Times-Bold findfont 12 scalefont def
  424. X
  425. X/BoldFont { font1d setfont } def
  426. X/PrimaryFont { font2d setfont } def
  427. X/SecondaryFont { font3d setfont } def
  428. X/fontH { fontHd setfont } def
  429. X/fontD { fontH2 setfont } def
  430. X/fontN { fontNd setfont } def
  431. X
  432. XSecondaryFont
  433. X%% stick in all the fudge factors here. May need changing for page sizes,
  434. X%% laserwriter setups etc?
  435. X%%
  436. X/binderspace 100 def
  437. X/filowidth 520 def
  438. X/filoheight 1024 def
  439. X/margin 12 def
  440. X/xleft binderspace 6 add def
  441. X/yco filoheight 50 sub def            % space at the top
  442. X/xright filowidth binderspace add 30 sub def    % space at right
  443. X
  444. X/endpage
  445. X{
  446. X  gsave
  447. X    fontH
  448. X    % draw the top for owner
  449. X    newpath
  450. X      xleft 10 sub yco moveto
  451. X      xleft yco 20 sub 10 180 270 arc
  452. X      xright yco 20 sub 10 270 0 arc
  453. X      xright yco 10 0 90 arc
  454. X      xleft yco 10 90 180 arc
  455. X    closepath
  456. X    0.90 setgray fill
  457. X%    newpath
  458. X%      318 864 15 0 360 arc
  459. X%      gsave
  460. X%        1 setgray fill
  461. X%      grestore
  462. X%    closepath
  463. X    0 setgray stroke
  464. X    xleft yco 16 sub moveto
  465. X    MailFor show
  466. X    User show
  467. X    fontD
  468. X    TimeNow stringwidth pop neg xright add yco 16 sub moveto TimeNow show
  469. X    fontN
  470. X    % dup stringwidth pop 2 div neg 318 add 858 moveto show
  471. X    fontH
  472. X    % lower box for subject etc
  473. X    newpath
  474. X      xleft 10 sub 60 moveto
  475. X      xleft 40 10 180 270 arc
  476. X      xright 40 10 270 0 arc
  477. X      xright 60 10 0 90 arc
  478. X      xleft 60 10 90 180 arc
  479. X    closepath
  480. X    0.90 setgray fill
  481. X    % stick the page number just a few points in from the right hand edge
  482. X    newpath
  483. X      xright 10 sub 50 15 0 360 arc
  484. X      gsave
  485. X        1 setgray fill
  486. X      grestore
  487. X    closepath
  488. X    0 setgray stroke
  489. X    xleft 44 moveto Subject show
  490. X    fontN
  491. X    % position and print the page number
  492. X    dup stringwidth pop 2 div neg xright 10 sub add 46 moveto show
  493. X    fontH
  494. X  grestore
  495. X  modu 2 eq eof 0 ne or { showpage } if    % do a 'form feed'
  496. X                    % if ready for it
  497. X  eof 0 eq { newpage } if    % reset parameters for next if not end of file
  498. X} def
  499. X
  500. X/endfile
  501. X{
  502. X     /eof 1 def
  503. X     endpage
  504. X} def
  505. X
  506. X/xo 36 def
  507. X/yo 0 def
  508. X/pageno 0 def
  509. X/modu pageno 3 mod def    % get mod to work out page pos
  510. X/eof 0 def
  511. X
  512. X/weearc            % draws a little arc to show where the holes go
  513. X{ newpath
  514. X  xo yo 4 0 360 arc
  515. X  closepath
  516. X  fill
  517. X} def
  518. X
  519. X/filopage
  520. X{ gsave
  521. X%  24 -118 translate
  522. X  /xstart filowidth modu mul def
  523. X  /xstart xstart binderspace add def
  524. X  /xfin xstart filowidth add def
  525. X  modu 0 eq {        % first break
  526. X    /yo 130 def    % show where the holes should be punched
  527. X    weearc        % except that they will normally be off the edge of
  528. X    /yo 238 def    % the page
  529. X    weearc
  530. X    /yo 346 def
  531. X    weearc
  532. X    /yo 639 def
  533. X    weearc
  534. X    /yo 742 def
  535. X    weearc
  536. X    /yo 850 def
  537. X    weearc
  538. X  } if
  539. X  [1 4] 0 setdash    % use dashed lines for marker
  540. X  newpath
  541. X  xstart 0 moveto
  542. X  xfin 0 lineto
  543. X  xfin filoheight lineto
  544. X  stroke
  545. X  grestore
  546. X} def
  547. X
  548. X/newpage
  549. X{ 
  550. X  pageno 0 eq {            % set initial values for landscape drawing
  551. X        0.5 0.5 scale
  552. X        90 rotate
  553. X        -50 0 translate
  554. X        gsave            % save state for easy restore
  555. X    /eof 0 def
  556. X  } {
  557. X        grestore gsave        % return to preferred original state
  558. X  } ifelse            % initial setup
  559. X
  560. X  /modu pageno 3 mod def    % get mod to work out page pos
  561. X  0 0 filoheight sub translate    % initial position (-filoheight)
  562. X  filopage            % draw neccessary page breaks
  563. X  /times filowidth modu mul def % shift origin as far right as needed
  564. X  /times times margin add def    % move right by fudge factor 12
  565. X  times 0 translate
  566. X  /lct 0 def
  567. X  /ypos filoheight 110 sub def
  568. X  xleft ypos moveto
  569. X  /pageno pageno 1 add def    % add one for the next time
  570. X} def
  571. X
  572. X/showline
  573. X{
  574. X  show
  575. X  /ypos ypos 12 sub def
  576. X  xleft ypos moveto
  577. X} def
  578. X
  579. Xnewpage            % establish first page parameters
  580. SHAR_EOF
  581. chmod 0444 mp.pro.timeman.ps || echo "restore of mp.pro.timeman.ps fails"
  582. set `wc -c mp.pro.timeman.ps`;Sum=$1
  583. if test "$Sum" != "4820"
  584. then echo original size 4820, current size $Sum;fi
  585. rm -f s2_seq_.tmp
  586. echo "You have unpacked the last part"
  587. exit 0
  588.  
  589.